# 控制蘑菇的收集行为和交互逻辑
extends StaticBody2D
# 玩家引用，用于检测玩家是否在收集范围内
var player = null
@onready var label = $Label
# 导出的物品属性，定义蘑菇的类型
@export var item : CollectableItem
func _ready() -> void:
	# 初始隐藏收集提示标签
	label.visible = false
func _process(delta: float) -> void:
	# 如果玩家在范围内且按下收集键，则收集物品
	if player != null and Input.is_action_just_pressed("collect"):
		playercollect()
		# 收集后从场景中移除
		self.queue_free()
# 区域进入信号处理：当有物体进入检测区域时调用
func _on_area_2d_body_entered(body: Node2D) -> void:
	# 如果进入的是玩家
	if body.name == "Player":
		# 显示收集提示
		label.visible = true
		# 保存玩家引用
		player = body
# 区域离开信号处理：当有物体离开检测区域时调用
func _on_area_2d_body_exited(body: Node2D) -> void:
	# 如果离开的是玩家
	if body.name == "Player":
		# 隐藏收集提示
		label.visible = false
		# 清除玩家引用
		player = null
# 玩家收集函数：调用玩家的收集方法
func playercollect():
	player.collect(item)
